This invention relates, in general, to heterogeneous computing environments, and in particular, to executing work units within such environments.
Work units, such as applications, jobs, computer programs or portions thereof, are assigned to processors for execution. In multiprocessor computing environments that include a plurality of symmetric processors, the assignment of work units to processors is less complex than in those multiprocessor computing environments that include asymmetric processors. If the processors are symmetrical, and thus, have the same features, then a work unit can execute on any of the processors, assuming there are available resources. However, if the processors are asymmetrical, and thus, do not have the same features, then a particular work unit may be unable to execute on a particular processor. That is, if a work unit needs a feature that is only present on some of the processors, then the work unit will have to execute on a processor having that feature.
The assignment of work units to processors in multiprocessor computing environments having asymmetric processors can be difficult, tedious, and error prone. This is because of the expansive amount of information that needs to be tracked and considered in properly assigning work units to processors for execution.